1
複製控制的機制
AI037Lesson 16
00:00

要掌握 C++ 物件的生命週期,就等於掌控其在 堆疊與堆區中的存在機制。複製控制定義了類別如何管理其 生命週期 透過兩個操作: 複製建構函式 以及 複製賦值運算子

1. 初始化與賦值的差異

直接初始化(例如, string dots(10, '.'))會直接呼叫建構函式。然而, 複製初始化string s2 = dots)則依賴於複製建構函式。與初始化不同, 賦值trans = accum)會使用 operator=來覆蓋一個已存在的物件。關鍵限制是:複製建構函式的參數必須是參考型態(const Foo&);否則,以值的方式傳遞引數將會觸發一個 無限遞迴循環 的複製呼叫。

來源物件[資料 A]目標物件[資料 A]成員逐一複製複製建構函式 / operator=

2. 合成的作用

如果你沒有定義這些成員,編譯器會提供 合成 版本,執行成員逐一複製。請注意:雖然對簡單型別足夠,但對於管理動態記憶體的類別來說,這些方法經常失效,導致懸空指標或重複釋放的問題。

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>